View Javadoc
1 /*
2 * Created by IntelliJ IDEA.
3 * User: birchfield
4 * Date: Aug 18, 2002
5 * Time: 4:55:54 PM
6 * To change template for new class use
7 * Code Style | Class Templates options (Tools | IDE Options).
8 */
9 package net.plugin.sql.util;
10
11 import net.plugin.sql.beans.DataSource;
12 import net.plugin.sql.listeners.DataSourceChangeListener;
13
14 import java.util.*;
15 import java.sql.Connection;
16
17 import com.intellij.openapi.project.Project;
18
19 public class DataSourceManager {
20
21 private final static HashMap instances = new HashMap(10);
22
23 private Collection datasources = null;
24 private Collection listeners = null;
25
26 private DataSourceManager() {
27 datasources = new ArrayList();
28 listeners = new ArrayList();
29 }
30
31 public static DataSourceManager getInstance(Project project) {
32 System.out.println("getInstance project = " + project);
33 DataSourceManager result = (DataSourceManager) instances.get(project);
34 if(result == null) {
35 result = new DataSourceManager();
36 instances.put(project, result);
37 }
38 return result;
39 }
40
41 public synchronized void addDataSource(DataSource dataSource) throws DataSourceException {
42 for (Iterator iterator = datasources.iterator(); iterator.hasNext();) {
43 DataSource source = (DataSource) iterator.next();
44 if (dataSource.getName().equals(source.getName())) {
45 System.out.println("duplicate name...");
46 throw new DataSourceException("A datasource with that name already exists!");
47 }
48 }
49 JDBCConnectionManager jdbcmanager = new JDBCConnectionManager(dataSource);
50 Connection conn = jdbcmanager.getConnection();
51 if (conn != null) {
52 System.out.println("Adding datasource: " + dataSource);
53 datasources.add(dataSource);
54 notifyListeners();
55 }
56 }
57
58 public synchronized void removeDataSource(DataSource dataSource) {
59 for (Iterator iterator = datasources.iterator(); iterator.hasNext();) {
60 DataSource source = (DataSource) iterator.next();
61 if (source.getName().equals(dataSource.getName())) {
62 iterator.remove();
63 }
64 }
65 }
66
67 public synchronized DataSource getDataSource(String name) {
68 for (Iterator iterator = datasources.iterator(); iterator.hasNext();) {
69 DataSource dataSource = (DataSource) iterator.next();
70 if (name.equals(dataSource.getName())) {
71 return dataSource;
72 }
73 }
74 return null;
75 }
76
77 public synchronized Collection getDataSources() {
78 Collection datasourcesCopy = new ArrayList(datasources.size());
79 for (Iterator iterator = datasources.iterator(); iterator.hasNext();) {
80 DataSource dataSource = (DataSource) iterator.next();
81 datasourcesCopy.add(dataSource);
82 }
83 return datasourcesCopy;
84 }
85
86 private void notifyListeners() {
87 for (Iterator iterator = listeners.iterator(); iterator.hasNext();) {
88 DataSourceChangeListener dataSourceChangeListener = (DataSourceChangeListener) iterator.next();
89 dataSourceChangeListener.dataSourcesChanged();
90 }
91 }
92
93 public void addDataSourceListener(DataSourceChangeListener listener) {
94 listeners.add(listener);
95 }
96
97 }
This page was automatically generated by Maven